"use strict";
const express = require('express');
const router = express.Router();
const retUtil = require("./utils/commonUtils/retUtil");
const CONSTANT = require("./const/CONST");
const authorizeUtil = require('./utils/routerUtils/authorizeUtil');

/* GET home page. */
router.get('/', function(req, res, next) {
    res.render('index', { title: 'Express' });
});

/***
 * 申请 token
 * @author mk
 * @date  2018-5-30
 * 参数： api_key       必须     入驻机构唯一标识
 * 参数： nonce_str      必须    随机字符串
 * 参数： expiration   必须    过期时间点的时间戳 如过期时间为：2018年8月8日 计算该天的的时间戳单精确到秒
 * 参数： signature    必须    签名 （通过api_key,noce_str,expiration）前三个参数计算得到
 * 测试地址 : http://localhost:3014/v1/authorize/applyToken?api_key=XXXXX&noce_str=yyyyy&expiration=1000&signature=zzzzzz
 */
function applyToken(req, res, next) {
    let apiKey = retUtil.stringFromReq(req, 'api_key');
    let nonceStr = retUtil.stringFromReq(req,'nonce_str');
    let expiration = retUtil.numberFromReq(req,'expiration') || 0;
    let signature = retUtil.stringFromReq(req,'signature') || "";
    //初步判断参数的有效性
    if (!apiKey || !nonceStr || !signature || apiKey.length !== 16 || nonceStr.length <= 0 || expiration <= 0 || signature.length <= 0){
        return retUtil.ret_err_json(CONSTANT.CODE.INVALID_PARAMS,res);
    }
    //申请 token
    authorizeUtil.applyToken(apiKey,nonceStr,expiration,signature,function (err,tokenRes) {
        if (err){
            console.log("routes/v1/authorize.js  applyToken err" + err);
            return retUtil.ret_err_json(err,res);
        }
        return retUtil.ret_succ_json(tokenRes,res);
    });
}
router.post('/applyToken', applyToken);
router.get('/applyToken', applyToken);





/***
 * 查询 token 信息
 * @author mk
 * @date   2018-5-30
 * 参数： api_key  必须   入驻机构唯一标识
 * 参数： token    必须   要查询的 token返回数据
 * 测试地址 : http://localhost:3014/v1/authorize/queryToken?api_key=XXXXX&token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmcm9tX3VzZXIiOiJCIiwidGFyZ2V0X3VzZXIiOiJBIn0.rSWamyAYwuHCo7IFAgd1oRpSP7nzL7BF5t7ItqpKViM
 */
function queryToken(req, res, next) {
    let apiKey = retUtil.stringFromReq(req, 'api_key');
    let token = retUtil.stringFromReq(req,'token');
    //初步判断参数的有效性
    if (!apiKey || !token || apiKey.length !== 16 || token.length <= 0){
        return retUtil.ret_err_json(CONSTANT.CODE.INVALID_PARAMS,res);
    }
    //查询token
    authorizeUtil.queryToken(apiKey,token,function (err,data) {
        if (err){
            console.log("routes/v1/authorize.js  queryToken err" + err);
            return retUtil.ret_err_json(err,res);
        }
        return retUtil.ret_succ_json(data,res);
    });
}
router.post('/queryToken', queryToken);
router.get('/queryToken', queryToken);


module.exports = router;
